import { log } from "console";

export {};

// 1. 什么是类 ？
// （1）类是一种抽象的概念。
// （2）类：具有相同特性（数据元素）和行为（功能）的对象的抽象就是类。

// 2. 有啥用？
// 能够使用基于类的面向对象的方式进行编程

// 3. 怎么用？

// 修饰符
// public: 公共属性: 随便用
// protected: 保护属性: 只可以在自身或者子类中使用
// private: 私有属性： 只可以在自身用

// 父类 | 基类
class Father {
  // 实例
  public sex: string
  protected code: number
  private money: number = 500
  // 构造器
  public constructor(sex: string, code: number) {
    // 添加实例属性
    this.sex = sex
    this.code = code

    this.code = 123
    this.money -= 20
  }
}

// 子类 | 派生类
class Son extends Father {
  // 实例
  public name: string;
  public age: number;
  // 构造器
  public constructor(name: string, age: number, sex: string, code: number) {
    // 必须调用父类的构造器
    super(sex, code)
    // 添加实例属性
    this.name = name;
    this.age = age;

    this.code = 321

    // this.money
  }
  public sayName() {
    console.log(`我是${this.name}, 今年${this.age}岁了， 我不是渣，我只是想给每个女孩一个家`)
  }
}

// 类必须通过new操作符实例化
const s1 = new Son("张三", 20, '男', 111111);
const s2 = new Son('李四', 33, '男', 222222)

s1.sayName()
s2.sayName()

// s1.code

console.log(s1, s2)


